home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Games of Daze
/
Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso
/
x2ftp
/
msdos
/
iguana
/
vts139b
/
lib
/
devgus.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-10-10
|
5KB
|
177 lines
{****************************************************************************}
{ }
{ MODULE: DevGUS }
{ }
{ DESCRIPTION: Device driver for the Gravis Ultrasound. }
{ }
{ AUTHOR: Juan Carlos Arévalo }
{ }
{ MODIFICATIONS: Nobody (yet ;-) }
{ }
{ HISTORY: 29-Aug-1993 Design and implementation. }
{ }
{ (C) 1992,93 VangeliSTeam }
{____________________________________________________________________________}
UNIT DevGUS;
INTERFACE
{ Device ID String. }
CONST
GUSDevID = 'GUS';
IMPLEMENTATION
USES SoundDevices, StrConst, GUS, Kbd;
PROCEDURE NullTimerHandler; FAR; ASSEMBLER;
ASM
MOV [DevSS],SS
MOV [DevSP],SP
MOV DX,DS
MOV SS,DX
MOV SP,OFFSET DevStack + DevStkSize
CALL [PeriodicProc]
MOV SS,[DevSS]
MOV SP,[DevSP]
END;
{----------------------------------------------------------------------------}
{ Name function. }
{____________________________________________________________________________}
FUNCTION DevName : TDevName; FAR;
BEGIN
DevName := GetString(StrDevGUSName);
END;
{----------------------------------------------------------------------------}
{ Autodetect routine. It's always present. }
{____________________________________________________________________________}
FUNCTION DevDetect : BOOLEAN; FAR;
BEGIN
IF DetectUltrasound THEN
BEGIN
StartUltrasound;
DevDetect := TRUE;
UsingGUS := TRUE;
END
ELSE
DevDetect := FALSE;
END;
{----------------------------------------------------------------------------}
{ Device Initialisation routine. }
{____________________________________________________________________________}
PROCEDURE DevInit(Hz: WORD); FAR;
BEGIN
InitGusIRQ;
UsingGUS := TRUE;
(*
CalcTimerData(TicksPerSecond); { Then do the standard polling initialisation. }
InitTimer;
*)
GUSTimer2Rut := NullTimerhandler;
GUSInitTimer2($100 - ((2000000 DIV (TicksPerSecond*320) + 1) SHR 1));
END;
{----------------------------------------------------------------------------}
{ Device deinitialisation routine. }
{____________________________________________________________________________}
PROCEDURE DevEnd; FAR;
BEGIN
DoneGusIRQ;
StartUltrasound;
END;
{----------------------------------------------------------------------------}
{ Accesory routines. }
{____________________________________________________________________________}
FUNCTION DevGetRealFreq(Hz: WORD) : WORD; FAR;
BEGIN
DevGetRealFreq := Hz;
END;
PROCEDURE DevChgHz(Hz: WORD); FAR;
BEGIN
END;
PROCEDURE DevPoll; FAR;
BEGIN
END;
{----------------------------------------------------------------------------}
{ Device record. }
{____________________________________________________________________________}
CONST
DevData : TSoundDevice = (
DevID : GUSDevID;
DMA : FALSE
);
{----------------------------------------------------------------------------}
{ Init code. }
{____________________________________________________________________________}
BEGIN
WITH DevData DO BEGIN
Name := DevName;
AutoDetect := DevDetect;
InitRut := DevInit;
ChgHzProc := DevChgHz;
GetRealFreqProc := DevGetRealFreq;
TimerHandler := SoundDevices.NullTimerHandler;
PollRut := DevPoll;
EndRut := DevEnd;
END;
InitDevice(@DevData);
END.